Multi-core processing systems often perform operations on packet data, wherein the packet data of a received packet is associated with a particular program identifier (program ID) that indicates a particular program to be executed by a core to process the packet data. A task manager or work scheduler can assign a particular core to execute the particular program that is to process the packet data. This combination of a particular program and corresponding data packet represents a specific task that is to be executed by the processing system, and in particular, once assigned to a specific core, this combination represents a specific task of that core, wherein the core can be assigned multiple tasks.
A particular task may be divided into one or more portions that are referred to as order scopes, wherein when a task has multiple order scopes, each order scope represents a portion of an operation to be performed by the task. For example, each order scope can correspond to a portion of the task's program code that is executed by the core. An order scope can also correspond to an operation during which control has been transferred by the core to a non-core resource, such as to a hardware accelerator, to execute on the packet data. Note that when a task portion is being executed by a non-core resource, the core assigned to process the task does not need to be actively processing that task. In such case, the core can be used to execute another one of its tasks, and continue executing the task when the task's order scope associated with the non-core resource is finished executing on the packet data.
A processor core can switch between tasks on order scope boundaries, e.g., after completion of one order scope and before starting a next order scope; and, therefore, the processor core needs to be able to store context information, e.g., state information, for a current task of a core before it exits the current task. This process of a core saving context information for an executing task to allow a different task to be processed by the core is generally referred to as context/task switching. Task switching provides a benefit of enabling a processor core to execute multiple tasks in a time-sliced manner.
An Order scope Manager (OSM) processes commands from multiple cores with multiple active threads or tasks. Commands that require a scope change or exclusivity require the core to yield to other tasks while waiting for a response (release). The latency of this response is not critical since the core is busy processing other tasks. The main concern is the throughput of the OSM considering the number of active tasks can be high.
The use of the same reference symbols in different drawings indicates similar or identical items.